<?php

namespace App\Enums;

/**
 * 单据编号前缀
 */
enum OrderNoPrefix: string
{
    case NO_SCLL    = 'SCLL';//生产领料
    case NO_SCHB    = 'SCHB';//生产汇报
    case NO_SCRK    = 'SCRK';//生产入库
    case NO_SCTLJH  = 'SCTLJH';//生产退料计划
    case NO_SCTL    = 'SCTL';//生产退料
    case NO_DB      = 'DB';//调拨
    case NO_PDFA    = 'PDFA';//盘点方案
    case NO_PD      = 'PD';//盘点
    case NO_QW      = 'QW';//箱号
    case NO_GYSH      = 'GYSH';//供应送货单箱号
    case NO_ZSD      = 'ZSD';//暂收单号
    case NO_LLJY      = 'LLJY';//检验单
    case NO_CGTH      = 'CGTH';//采购退货
    case NO_ZZCGTH      = 'ZZCGTH';//采购退货组织间
    case NO_CG      = 'CG';//采购
    case NO_ZZCG      = 'ZZCG';//组织间入库
    case NO_QTRK      = 'QTRK';//其他入库
    case NO_RTCK      = 'RTCK';//其他出库
    case NO_XSTH      = 'XSTH';//销售退货
    case NO_FBSDB     = 'FBSDB';//分步式调拨




    /**
     * name
     *
     * @return string
     */
    public function label(): string
    {
        return match ($this) {
            self::NO_SCLL    => '生产领料',
            self::NO_SCHB    => '生产汇报',
            self::NO_SCRK    => '生产入库',
            self::NO_SCTLJH  => '生产退料计划',
            self::NO_SCTL    => '生产退料',
            self::NO_DB      => '调拨',
            self::NO_PDFA    => '盘点方案',
            self::NO_PD      => '盘点',
            self::NO_QW      => '箱号',
            self::NO_GYSH      => '供应送货单',
            self::NO_ZSD      => '暂收',
            self::NO_LLJY      => '检验单',
            self::NO_CGTH      => '采购退货',
            self::NO_ZZCGTH      => '采购退货组织间',
            self::NO_CG      => '采购入库',
            self::NO_ZZCG      => '组织间采购入库',
            self::NO_QTRK      => '其他入库',
            self::NO_RTCK      => '其他出库',
            self::NO_XSTH      => '销售退货',
            self::NO_NO_FBSDB  => '分步式调拨',

        };
    }

    /**
     * 根据值获取名称
     * @param $val
     * @return string
     */
    static function labelBy($val){
        $obj = self::tryFrom((int)$val);
        return $obj ? $obj->label() : '';
    }
}
